﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Hydra.Shell.Attributes;
using Hydra.Shell.Enumerations;

namespace Hydra.Shell.Interfaces
{
    [Guid("11138F8A-38C0-4436-B5A6-2F5EF2C3E242")]
    public interface IHydraWindowFrame : IUnknown
    {
        bool CloseFrame(FrameClose grfSaveOptions);
        bool GetFramePos(HydraSetFramePos[] pdwSFP, out Guid pguidRelativeTo, out int px, out int py, out int pcx, out int pcy);
        bool GetGuidProperty(HydraFrameProperties propid, out Guid pguid);
        bool GetProperty(HydraFrameProperties propid, out object pvar);
        bool Hide();
        bool IsOnScreen { get; }
        bool IsVisible { get; }
        bool QueryViewInterface(ref Guid riid, out IUnknown ppv);
        bool SetFramePos(HydraSetFramePos dwSFP, ref Guid rguidRelativeTo, int x, int y, int cx, int cy);
        bool SetGuidProperty(HydraFrameProperties propid, ref Guid rguid);
        bool SetProperty(HydraFrameProperties propid, object var);
        bool Show();
        bool ShowNoActivate();
        bool Advise(IHydraWindowFrameNotify pNotify, out uint pdwCookie);
        bool Unadvise(uint dwCookie);
        bool ActivateOwnerDockedWindow();
    }
}
